/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tramite.beans;

import cip.util.ControladorAbstracto;
import cip.util.PaginacionFiltro;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.be.Area;
import org.cip.esymons.tramite.bc.AreaDelegate;


/**
 *
 * @author Freddy Infantes
 */
public class AreaController  extends ControladorAbstracto {

    private AreaDelegate delegado;
    private MiPaginador paginador;
    private Area area;

    public AreaController() {
        delegado = new AreaDelegate();
        paginador = new MiPaginador<Area>(null, 20);
        paginador.setFilter("");
    }

    /**
     * @return the paginador
     */
    public MiPaginador getPaginador() {
        return paginador;
    }

    /**
     * @param paginador the paginador to set
     */
    public void setPaginador(MiPaginador paginador) {
        this.paginador = paginador;
    }

    /**
     * @return the area
     */
    public Area getArea() {
        return area;
    }

    /**
     * @param area the area to set
     */
    public void setArea(Area area) {
        this.area = area;
    }

    /**
     * @return the delegado
     */
    public AreaDelegate getDelegado() {
        return delegado;
    }

    /**
     * @return the tipoDoc
     */   
    
    public final class MiPaginador<k> extends PaginacionFiltro {

        private String nom;

        public MiPaginador(String action, int cantidad) {
            super(action, cantidad);
        }

        @Override
        public int contar() throws Exception {
            try {
                return getDelegado().contarPaginadorArea(nom);
            } catch (Exception e) {
                return 0;
            }
        }

       @Override
        public List listar() throws Exception {
            try {
                return getDelegado().paginadorArea(getPaginador().getCantidadxPagina(), getPaginador().getPosicion(),nom);
            } catch (Exception e) {
                return new ArrayList();
            }
        }

        public String getNom() {
            return nom;
        }

        public void setNom(String valor) {
            try {
                if (!valor.equals(nom)) {
                    nom = valor;
                    reset();
                }
            } catch (Exception ex) {
                nom = null;
            }
        }
    }

    public SelectItem[] getAreaItems() {
        try {
            List<Area> la = getDelegado().findAll();
            SelectItem[] select = new SelectItem[la.size()];
            int i = 0;
            for (Area ev : la) {
                SelectItem item = new SelectItem(ev, ev.getAreNombre());
                select[i++] = item;
            }

            return select;

        } catch (Exception ex) {
            SelectItem[] select = new SelectItem[1];
            SelectItem item = new SelectItem(null,"No existen Ambientes");
            select[0] = item;
            return select;
        }
    }

    public String nuevo(){
        area = new Area();
        return "nuevo";
    }

    public String grabar(){
        getDelegado().create(getArea());
        getPaginador().reset();
        return "buscar";
    }

    public String buscar(){
        getPaginador().reset();
        return null;
    }

    public String actualizar(){
        getDelegado().edit(getArea());
        getPaginador().reset();
        return "buscar";
    }

    public Area buscarPorCodigo(Integer id){
        try{
            return getDelegado().find(id);
        }catch(Exception ex){
            return null;
        }
    }
}
